命令行GUI开发 - FTXUI
阅读量
0
阅读人次
0
FTXUI 是一个用于基于终端的用户界面的简单跨平台 C++ 库!它受 React 启发,采用函数式编程。
FTXUI 主要由三个模块组成,Screen、Dom、Component。
- Screen 抽象出了一个虚拟的 显示器 对象,使得我能能够在上面进行界面绘制,最终呈现在终端上。
- Dom 代表 UI 元素,该模块定义了一组具有层次的
ftxui::Element
,Element
能够对布局进行管理,并且能够根据终端的二维大小进行响应式变化,它用于绘制在Screen
上。 - Component 代表用于接收用户输入,以及进行动态响应的组件。
ftxui::Element
用于选择一个单独的帧画面,ftxui::Component
被用于渲染动态用户界面,它会产生多个帧,并且会根据事件的变化而更新其状态,从而产生不同的帧(例如按钮的按下和释放)。
使用
include(FetchContent)
FetchContent_Declare(FTXUI
GIT_REPOSITORY https://amass.fun/gitea/amass/FTXUI.git
GIT_TAG v5.0.0
)
FetchContent_MakeAvailable(FTXUI)
add_executable(FtxTest
main.cpp
)
target_link_libraries(FtxTest
PRIVATE ftxui::screen
PRIVATE ftxui::dom
PRIVATE ftxui::component
)
#include <ftxui/dom/elements.hpp>
#include <ftxui/screen/screen.hpp>
#include <stdio.h>
int main() {
using namespace ftxui;
auto document = vbox({
hbox({
text("one") | border,
text("two") | border | flex,
text("three") | border | flex,
}),
gauge(0.25) | color(Color::Red),
gauge(0.50) | color(Color::White),
gauge(0.75) | color(Color::Blue),
});
auto screen = Screen::Create(Dimension::Full(),Dimension::Fit(document));
Render(screen, document);
screen.Print();
getchar();
return 0;
}